home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / fsrmt / fsrmtInt.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-19  |  8.9 KB  |  231 lines

  1. /*
  2.  * fsrmtInt.h --
  3.  *
  4.  *    Definitions of the parameters required for Sprite Domain operations
  5.  *
  6.  * Copyright (C) 1985 Regents of the University of California
  7.  * All rights reserved.
  8.  * Permission to use, copy, modify, and distribute this
  9.  * software and its documentation for any purpose and without
  10.  * fee is hereby granted, provided that the above copyright
  11.  * notice appear in all copies.  The University of California
  12.  * makes no representations about the suitability of this
  13.  * software for any purpose.  It is provided "as is" without
  14.  * express or implied warranty.
  15.  *
  16.  *
  17.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/fsrmt/fsrmtInt.h,v 9.7 92/10/28 18:09:01 mgbaker Exp $ SPRITE (Berkeley)
  18.  */
  19.  
  20. #ifndef _FSSPRITEDOMAIN
  21. #define _FSSPRITEDOMAIN
  22.  
  23. #include <fsNameOps.h>
  24. #include <proc.h>
  25. #include <fsrmt.h>
  26.  
  27. #include <stdio.h>
  28.  
  29. /*
  30.  * Parameters for the read and write RPCs.
  31.  */
  32.  
  33. typedef struct FsrmtIOParam {
  34.     Fs_FileID    fileID;            /* Identifies file to read from */
  35.     Fs_FileID    streamID;        /* Identifies stream (for offset) */
  36.     Sync_RemoteWaiter waiter;        /* Process info for remote waiting */
  37.     Fs_IOParam    io;            /* I/O parameter block */
  38. } FsrmtIOParam;
  39.  
  40. /*
  41.  * Parameters for the iocontrol RPC
  42.  */
  43.  
  44. typedef struct FsrmtIOCParam {
  45.     Fs_FileID    fileID;        /* File to manipulate. */
  46.     Fs_FileID    streamID;    /* Stream to the file, needed for locking */
  47.     Proc_PID    procID;        /* ID of invoking process */
  48.     Proc_PID    familyID;    /* Family of invoking process */
  49.     int        command;    /* I/O Control to perform. */
  50.     int        inBufSize;    /* Size of input params to ioc. */
  51.     int        outBufSize;    /* Size of results from ioc. */
  52.     Fmt_Format    format;        /* Defines client's byte order/alignment 
  53.                  * format. */
  54.     int        uid;        /* Effective User ID */
  55. } FsrmtIOCParam;
  56.  
  57. /*
  58.  * Parameters for the I/O Control RPC.  (These aren't used, oops,
  59.  * someday they should be used.)
  60.  */
  61.  
  62. typedef struct FsrmtIOCParamNew {
  63.     Fs_FileID    fileID;        /* File to manipulate. */
  64.     Fs_FileID    streamID;    /* Stream to the file, needed for locking */
  65.     Fs_IOCParam    ioc;        /* IOControl parameter block */
  66. } FsrmtIOCParamNew;
  67.  
  68. /*
  69.  * Parameters for the block copy RPC.
  70.  */
  71. typedef struct FsrmtBlockCopyParam {
  72.     Fs_FileID    srcFileID;    /* File to copy from. */
  73.     Fs_FileID    destFileID;    /* File to copy to. */
  74.     int        blockNum;    /* Block to copy to. */
  75. } FsrmtBlockCopyParam;
  76.  
  77.  
  78. /*
  79.  * RPC debugging.
  80.  */
  81. #ifndef CLEAN
  82. #define FSRMT_RPC_DEBUG_PRINT(string) \
  83.     if (fsrmt_RpcDebug) {\
  84.         printf(string);\
  85.     }
  86. #define FSRMT_RPC_DEBUG_PRINT1(string, arg1) \
  87.     if (fsrmt_RpcDebug) {\
  88.         printf(string, arg1);\
  89.     }
  90. #define FSRMT_RPC_DEBUG_PRINT2(string, arg1, arg2) \
  91.     if (fsrmt_RpcDebug) {\
  92.         printf(string, arg1, arg2);\
  93.     }
  94. #define FSRMT_RPC_DEBUG_PRINT3(string, arg1, arg2, arg3) \
  95.     if (fsrmt_RpcDebug) {\
  96.         printf(string, arg1, arg2, arg3);\
  97.     }
  98. #define FSRMT_RPC_DEBUG_PRINT4(string, arg1, arg2, arg3, arg4) \
  99.     if (fsrmt_RpcDebug) {\
  100.         printf(string, arg1, arg2, arg3, arg4);\
  101.     }
  102. #else
  103. #define FSRMT_RPC_DEBUG_PRINT(string)
  104. #define FSRMT_RPC_DEBUG_PRINT1(string, arg1)
  105. #define FSRMT_RPC_DEBUG_PRINT2(string, arg1, arg2)
  106. #define FSRMT_RPC_DEBUG_PRINT3(string, arg1, arg2, arg3)
  107. #define FSRMT_RPC_DEBUG_PRINT4(string, arg1, arg2, arg3, arg4)
  108. #endif not CLEAN
  109.  
  110.  
  111.  /*
  112.  * Sprite Domain functions called via Fsprefix_LookupOperation.
  113.  * These are called with a pathname.
  114.  */
  115. extern ReturnStatus FsrmtImport _ARGS_((char *prefix, int serverID, 
  116.         Fs_UserIDs *idPtr, int *domainTypePtr,
  117.         Fs_HandleHeader **hdrPtrPtr));
  118. extern ReturnStatus FsrmtOpen _ARGS_((Fs_HandleHeader *prefixHandle,
  119.         char *relativeName, Address argsPtr, Address resultsPtr,
  120.         Fs_RedirectInfo **newNameInfoPtrPtr));
  121. extern ReturnStatus FsrmtReopen _ARGS_((Fs_HandleHeader *hdrPtr, int inSize,
  122.         Address inData, int *outSizePtr, Address outData));
  123. extern ReturnStatus FsrmtGetAttrPath _ARGS_((Fs_HandleHeader *prefixHandle, 
  124.         char *relativeName, Address argsPtr, Address resultsPtr,
  125.         Fs_RedirectInfo **newNameInfoPtrPtr));
  126. extern ReturnStatus FsrmtSetAttrPath _ARGS_((Fs_HandleHeader *prefixHandle, 
  127.         char *relativeName, Address argsPtr, Address resultsPtr, 
  128.         Fs_RedirectInfo **newNameInfoPtrPtr));
  129. extern ReturnStatus FsrmtMakeDevice _ARGS_((Fs_HandleHeader *prefixHandle, 
  130.         char *relativeName, Address argsPtr, Address resultsPtr, 
  131.         Fs_RedirectInfo **newNameInfoPtrPtr));
  132. extern ReturnStatus FsrmtMakeDir _ARGS_((Fs_HandleHeader *prefixHandle, 
  133.         char *relativeName, Address argsPtr, Address resultsPtr, 
  134.         Fs_RedirectInfo **newNameInfoPtrPtr));
  135. extern ReturnStatus FsrmtRemove _ARGS_((Fs_HandleHeader *prefixHandle, 
  136.         char *relativeName, Address argsPtr, Address resultsPtr, 
  137.         Fs_RedirectInfo **newNameInfoPtrPtr));
  138. extern ReturnStatus FsrmtRemoveDir _ARGS_((Fs_HandleHeader *prefixHandle, 
  139.         char *relativeName, Address argsPtr, Address resultsPtr, 
  140.         Fs_RedirectInfo **newNameInfoPtrPtr));
  141. extern ReturnStatus FsrmtRename _ARGS_((Fs_HandleHeader *prefixHandle1, 
  142.         char *relativeName1, Fs_HandleHeader *prefixHandle2, 
  143.         char *relativeName2, Fs_LookupArgs *lookupArgsPtr, 
  144.         Fs_RedirectInfo **newNameInfoPtrPtr, Boolean *name1ErrorPtr));
  145. extern ReturnStatus FsrmtHardLink _ARGS_((Fs_HandleHeader *prefixHandle1,
  146.         char *relativeName1, Fs_HandleHeader *prefixHandle2, 
  147.         char *relativeName2, Fs_LookupArgs *lookupArgsPtr, 
  148.         Fs_RedirectInfo **newNameInfoPtrPtr, Boolean *name1ErrorPtr));
  149.  
  150.  
  151. /*
  152.  * Sprite Domain functions called via the fsAttrOpsTable switch.
  153.  * These are called with a fileID.
  154.  */
  155. extern ReturnStatus FsrmtGetAttr _ARGS_((Fs_FileID *fileIDPtr, int clientID, 
  156.         Fs_Attributes *attrPtr));
  157. extern ReturnStatus FsrmtSetAttr _ARGS_((Fs_FileID *fileIDPtr, 
  158.         Fs_Attributes *attrPtr, Fs_UserIDs *idPtr, int flags));
  159. extern ReturnStatus FsrmtDeviceIoOpen _ARGS_((Fs_FileID *ioFileIDPtr, 
  160.         int *flagsPtr, int clientID, ClientData streamData,
  161.         char *name, Fs_HandleHeader **ioHandlePtrPtr));
  162. extern Fs_HandleHeader *FsrmtDeviceVerify _ARGS_((Fs_FileID *fileIDPtr, 
  163.         int clientID, int *domainTypePtr));
  164. extern ReturnStatus FsrmtDeviceMigrate _ARGS_((Fsio_MigInfo *migInfoPtr, 
  165.         int dstClientID, int *flagsPtr, int *offsetPtr, int *sizePtr, 
  166.         Address *dataPtr));
  167. extern ReturnStatus FsrmtDeviceReopen _ARGS_((Fs_HandleHeader *hdrPtr, 
  168.         int clientID, ClientData inData, int *outSizePtr, 
  169.         ClientData *outDataPtr));
  170.  
  171. extern Fs_HandleHeader *FsrmtPipeVerify _ARGS_((Fs_FileID *fileIDPtr,
  172.         int clientID, int *domainTypePtr));
  173. extern ReturnStatus FsrmtPipeReopen _ARGS_((Fs_HandleHeader *hdrPtr, 
  174.         int clientID, ClientData inData, int *outSizePtr, 
  175.         ClientData *outDataPtr));
  176.  
  177.  
  178. extern ReturnStatus FsrmtFileIoOpen _ARGS_((Fs_FileID *ioFileIDPtr, 
  179.         int *flagsPtr, int clientID, ClientData streamData, char *name,
  180.         Fs_HandleHeader **ioHandlePtrPtr));
  181. extern ReturnStatus FsrmtFileReopen _ARGS_((Fs_HandleHeader *hdrPtr, 
  182.         int clientID, ClientData inData, int *outSizePtr, 
  183.         ClientData *outDataPtr));
  184. extern ReturnStatus FsrmtFileClose _ARGS_((Fs_Stream *streamPtr, int clientID, 
  185.         Proc_PID procID, int flags, int dataSize, ClientData closeData));
  186.  
  187. extern ReturnStatus FsrmtSetupFileReopen _ARGS_((Fs_HandleHeader *hdrPtr,
  188.     Address paramsPtr));
  189. extern void FsrmtFinishFileReopen _ARGS_((Fs_HandleHeader *hdrPtr,
  190.     Address statePtr, ReturnStatus status));
  191. extern ReturnStatus FsrmtSetupDeviceReopen _ARGS_((Fs_HandleHeader *hdrPtr,
  192.     Address paramsPtr));
  193. extern void FsrmtFinishDeviceReopen _ARGS_((Fs_HandleHeader *hdrPtr,
  194.     Address statePtr, ReturnStatus status));
  195. extern ReturnStatus FsrmtSetupPipeReopen _ARGS_((Fs_HandleHeader *hdrPtr,
  196.     Address paramsPtr));
  197. extern void FsrmtFinishPipeReopen _ARGS_((Fs_HandleHeader *hdrPtr,
  198.     Address statePtr, ReturnStatus status));
  199.  
  200. extern Boolean FsrmtFileScavenge _ARGS_((Fs_HandleHeader *hdrPtr));
  201. extern Fs_HandleHeader *FsrmtFileVerify _ARGS_((Fs_FileID *fileIDPtr, 
  202.         int clientID, int *domainTypePtr));
  203. extern ReturnStatus FsrmtFileMigClose _ARGS_((Fs_HandleHeader *hdrPtr, 
  204.         int flags));
  205. extern ReturnStatus FsrmtFileMigOpen _ARGS_((Fsio_MigInfo *migInfoPtr, 
  206.         int size, ClientData data, Fs_HandleHeader **hdrPtrPtr));
  207. extern ReturnStatus FsrmtFileMigrate _ARGS_((Fsio_MigInfo *migInfoPtr, 
  208.         int dstClientID, int *flagsPtr, int *offsetPtr, int *sizePtr, 
  209.         Address *dataPtr));
  210. extern ReturnStatus FsrmtFileRead _ARGS_((Fs_Stream *streamPtr, 
  211.         Fs_IOParam *readPtr, Sync_RemoteWaiter *remoteWaitPtr, 
  212.         Fs_IOReply *replyPtr));
  213. extern ReturnStatus FsrmtFileWrite _ARGS_((Fs_Stream *streamPtr, 
  214.         Fs_IOParam *writePtr, Sync_RemoteWaiter *remoteWaitPtr, 
  215.         Fs_IOReply *replyPtr));
  216. extern ReturnStatus FsrmtFilePageRead _ARGS_((Fs_Stream *streamPtr, 
  217.         Fs_IOParam *readPtr, Sync_RemoteWaiter *remoteWaitPtr, 
  218.         Fs_IOReply *replyPtr));
  219. extern ReturnStatus FsrmtFilePageWrite _ARGS_((Fs_Stream *streamPtr, 
  220.         Fs_IOParam *writePtr, Sync_RemoteWaiter *remoteWaitPtr, 
  221.         Fs_IOReply *replyPtr));
  222. extern ReturnStatus FsrmtFileIOControl _ARGS_((Fs_Stream *streamPtr, 
  223.         Fs_IOCParam *ioctlPtr, Fs_IOReply *replyPtr));
  224. extern ReturnStatus FsrmtFileGetIOAttr _ARGS_((Fs_FileID *fileIDPtr, 
  225.         int clientID, Fs_Attributes *attrPtr));
  226. extern ReturnStatus FsrmtFileSetIOAttr _ARGS_((Fs_FileID *fileIDPtr, 
  227.         Fs_Attributes *attrPtr, int flags));
  228.  
  229.  
  230. #endif _FSSPRITEDOMAIN
  231.